/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.deployment.manager;

import br.com.deployment.entidade.acesso.Usuario;
import br.com.deployment.entidade.protocolo.Protocolo;
import br.com.deployment.entidade.tramite.Secao;
import br.com.deployment.entidade.tramite.Tramite;
import br.com.deployment.message.Msg;
import br.com.deployment.servico.ProtocoloServico;
import br.com.deployment.servico.SecaoServico;
import br.com.deployment.servico.TramiteServico;
import br.com.deployment.servico.UsuarioServico;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.primefaces.event.SelectEvent;

/**
 *
 * @author roniere
 */
@ManagedBean
@ViewScoped
public class ManagerTramite  implements Serializable{
    
    @EJB
    TramiteServico tramiteServico;
    
    @EJB
    UsuarioServico usuarioServico;
    
    @EJB
    SecaoServico secaoServico;
    
    @EJB
    ProtocoloServico protocoloServico;
    
    private Protocolo protocolo;
    private Tramite tramite;
    private Usuario usuario;
    private List<Usuario> lstUsuario;
    private String cod;
    
    @PostConstruct
    public void init(){
        tramite = new Tramite();
        usuario = usuarioContexto();
        lstUsuario = new ArrayList<Usuario>();
    }
    
    public Usuario getUsuario() {
        return usuario;
    }
    
    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public Protocolo getProtocolo() {
        return protocolo;
    }

    public void setProtocolo(Protocolo protocolo) {
        this.protocolo = protocolo;
    }

    public String getCod() {
        return cod;
    }

    public void setCod(String cod) {
        this.cod = cod;
    }
    
    
    
    public List<Usuario> getLstUsuario() {
        return lstUsuario;
    }

    public void setLstUsuario(List<Usuario> lstUsuario) {
        this.lstUsuario = lstUsuario;
    }
    
    public Tramite getTramite() {
        return tramite;
    }

    public void setTramite(Tramite tramite) {
        this.tramite = tramite;
    }
    
    public Usuario usuarioContexto(){
        return usuarioServico.getUsuario();
    }
    
    public void usuarioDestinatario(SelectEvent event) {
        lstUsuario = usuarioServico.findUsuarioBySecao(secaoServico.find(((Secao) event.getObject()).getId()));
    }
    
    public List<Secao> secaoUsuarioContexto(String event) {
        return usuarioServico.findSecaoUsuario();
    }
    
    public List<Usuario> completeUsrDestino(String query){
        return lstUsuario;
    }
    
    public void protocoloFind(){
        protocolo = protocoloServico.find(Integer.parseInt(cod));
        
        if(protocolo == null){
            Msg.messagemError("Protocolo inexistente");
        }
    }
    
    public void tramitar(){
        tramite.setProtocolo(protocolo);
        tramite.setUsrRemetente(usuario);
        tramite.setDataCad(new Date());
        tramite.setStatus(false);
        tramiteServico.save(tramite);
        Msg.messagemInfo("Salvo com Sucesso");
        System.err.println(tramite);
    }
}
